package com.cooksys.film_rental.bo;

import java.util.List;

import com.cooksys.film_rental.model.Film;
import com.cooksys.film_rental.model.Language;

/**
 * Business object for the {@link Language} class
 * 
 * @author Peter Zastoupil
 * 
 */
public interface LanguageBo {

	/**
	 * 
	 * @param languageId
	 *            the languageId to search by
	 * @return the {@link Language} object associated with the given languageId
	 */
	public Language getLanguageByLanguageId(Byte languageId);

	/**
	 * 
	 * @param languageId
	 *            String representation of the languageId to search by
	 * @return the {@link Language} object associated with the given languageId
	 */
	public Language getLanguageByLanguageId(String languageId);

	/**
	 * 
	 * @param partialName
	 *            the partialName to search by
	 * @return a List of {@link Language} objects that match the given partial
	 *         name
	 */
	public List<Language> searchLanguagesByPartialName(String partialName);

	/**
	 * 
	 * @param film
	 *            the {@link Film} to search by
	 * @return the {@link Language} object associated with the given film
	 */
	public Language getLanguageByFilm(Film film);

	/**
	 * 
	 * @param film
	 *            the {@link Film} to search by
	 * @return the original {@link Language} object associated with the given
	 *         film
	 */
	public Language getOriginalLanguageByFilm(Film film);

	/**
	 * 
	 * @return a List of all {@link Language} objects in the database
	 */
	public List<Language> getAllLanguages();

}
